package com.learn.a06_2_inventory.data

import kotlinx.coroutines.flow.Flow

/**
 * 数据仓库接口，定义对 [Item] 数据项的增删改查操作
 * 职责：提供统一的数据操作抽象层（与具体数据源解耦）
 */
interface ItemsRepository {
    /**
     * 获取所有数据项的流式数据（Flow 实现实时数据监听）
     * @return Flow 包装的 [Item] 列表，可用于响应式 UI 更新
     */
    fun getAllItemsStream(): Flow<List<Item>>

    /**
     * 根据 ID 获取单个数据项的流式数据
     * @param id 数据项唯一标识
     * @return Flow 包装的 [Item] 对象（可为空）
     */
    fun getItemStream(id: Int): Flow<Item?>

    /**
     * 插入新数据项（挂起函数，适用于协程环境）
     * @param item 待插入的数据项对象
     */
    suspend fun insertItem(item: Item)

    /**
     * 删除指定数据项（挂起函数，适用于协程环境）
     * @param item 待删除的数据项对象
     */
    suspend fun deleteItem(item: Item)

    /**
     * 更新指定数据项（挂起函数，适用于协程环境）
     * @param item 待更新的数据项对象
     */
    suspend fun updateItem(item: Item)
}

